package phone.qyg.com.qyg.activity;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

import com.app.base.tool.BaseActivity;
import com.app.config.AppHttpKey;
import com.app.config.ApplicationConfig;
import com.app.utils.CommonUtil;
import com.app.utils.JSONTool;
import com.app.utils.PromptManager;

import org.xutils.view.annotation.ContentView;
import org.xutils.view.annotation.Event;
import org.xutils.view.annotation.ViewInject;

import phone.qyg.com.qyg.R;
import phone.qyg.com.qyg.utils.AppHttpRequest;

/**
 * 作者：lblbh on 2017/12/4 14:31
 * 邮箱：lanbuhan@163.com
 * 功能：忘记密码
 */
@ContentView(R.layout.forget_pass)
public class ForgetPassActivity extends BaseActivity implements TextWatcher {
    private int VERIFICATIONCONTENTSTR_SIZE = 6;//验证码的长度
    int i = 60;

    @ViewInject(R.id.back)
    TextView back;

    @ViewInject(R.id.verification_code)
    TextView verification_code;

    @ViewInject(R.id.submit)
    TextView submit;

    @ViewInject(R.id.phone)
    EditText phone;

    @ViewInject(R.id.code)
    EditText code;

    @ViewInject(R.id.one_pass)
    EditText one_pass;

    @ViewInject(R.id.two_pass)
    EditText two_pass;


    @Event(value = {R.id.back,R.id.verification_code,R.id.submit})
    private void viewOnClick(View v){
        switch (v.getId()){
            case R.id.back:
                this.finish();
                break;
            case R.id.verification_code:
                //获取验证码
                String phoneNums = phone.getText().toString();
                // 1. 通过规则判断手机号
                if (!judgePhoneNums(phoneNums)) {
                    return;
                }
                // 2.发送短信验证码
                updateVerification(phoneNums);
                // 3.倒计时
                verification_code.setClickable(false);
                verification_code.setText("重新发送("+i+")");
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        for (; i > 0; i--) {
                            handler.sendEmptyMessage(-9);
                            if (i <= 0) {
                                break;
                            }
                            try {
                                Thread.sleep(1000);
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }
                        }
                        handler.sendEmptyMessage(-8);
                    }
                }).start();
                break;
            case R.id.submit:

                /**
                 *  “version”: 1.0    //版本号，按版本号获取相应数据
                 “mobile”:”18792837453”,//手机号（忘记时填写）
                 “mobile_code”:”18792837453”,//手机验证码（忘记时填写）
                 “old_password”:”123456”       //原密码（修改时填写）
                 “passsword”:”123456”,         //新密码
                 “type”: 1                     //修改类型1-忘记，2-修改

                 */
                submit.setEnabled(false);

                String newStr = getEditToString(one_pass);
                String qureStr = getEditToString(two_pass);
                if(!newStr.equals(qureStr)){
                    PromptManager.showToast(R.string.qure_pass_new);
                    return;
                }

                if (!CommonUtil.isPassNO(newStr)) {
                    PromptManager.showToast(R.string.pass_format_hint);
                    return;
                }

                mapKeys.put(AppHttpKey.TYPE,"1");
                mapKeys.put(AppHttpKey.MOBILE,getEditToString(phone));
                mapKeys.put(AppHttpKey.MOBILE_CODE,getEditToString(code));
                mapKeys.put(AppHttpKey.PASSWORD,newStr);
                AppHttpRequest.appQuitState(ApplicationConfig.UPDATE_USER_PWD,
                        mapKeys,
                        new AppHttpRequest.OnAppHttpListener() {
                            @Override
                            public void onAppHttpState(boolean isState, String result) {
                                if(isState){
                                    PromptManager.showToast(R.string.back_pssword_sucess);
                                    ForgetPassActivity.this.finish();
                                }
                            }
                        });
                break;

        }
    }


    private void updateVerification(String phoneNums){
        if (!judgePhoneNums(phoneNums)) {
            PromptManager.showToast(R.string.mobile_phone_format_is_wrong);
            return;
        }

        mapKeys.put(AppHttpKey.MOBILE,phoneNums);
        AppHttpRequest.httpRequestDefalut(ApplicationConfig.SEND_SMS,
                mapKeys,
                new AppHttpRequest.OnAppHttpListener() {
                    @Override
                    public void onAppHttpState(boolean isState, String result) {
                        if(isState){
                            PromptManager.showToast(JSONTool.errorHint(result));
                        }
                    }
                });
    }


    /**
     * 判断手机号码是否合理
     *
     * @param phoneNums
     */
    private boolean judgePhoneNums(String phoneNums) {
        if (isMatchLength(phoneNums, 11)
                && isMobileNO(phoneNums)) {
            return true;
        }
        PromptManager.showToast(R.string.mobile_phone_format_is_wrong);
        return false;
    }
    /**
     * 验证手机格式
     */
    public static boolean isMobileNO(String mobiles) {
		/*
		 * 移动：134、135、136、137、138、139、150、151、157(TD)、158、159、187、188
		 * 联通：130、131、132、152、155、156、185、186 电信：133、153、180、189、（1349卫通）
		 * 总结起来就是第一位必定为1，第二位必定为3,4或5或8或7，其他位置的可以为0-9
		 */
        String telRegex = "[1][34578]\\d{9}";// "[1]"代表第1位为数字1，"[358]"代表第二位可以为3、4/5、7,8中的一个，"\\d{9}"代表后面是可以是0～9的数字，有9位。
        if (TextUtils.isEmpty(mobiles))
            return false;
        else
            return mobiles.matches(telRegex);
    }
    /**
     * 判断一个字符串的位数
     * @param str
     * @param length
     * @return
     */
    public static boolean isMatchLength(String str, int length) {
        if (str.isEmpty()) {
            return false;
        } else {
            return str.length() == length ? true : false;
        }
    }
    Handler handler = new Handler() {
        public void handleMessage(Message msg) {
            if (msg.what == -9) {
                verification_code.setText("重新发送(" + i + ")");
            } else if (msg.what == -8) {
                verification_code.setText("获取验证码");
                verification_code.setClickable(true);
                i = 60;
            }
        }
    };

    @Override
    public void initSucessView() {}
    @Override
    public void initData(Bundle savedInstanceState) {}
    @Override
    public void initViewHandler() {
        phone.addTextChangedListener(this);
        code.addTextChangedListener(this);
        one_pass.addTextChangedListener(this);
        two_pass.addTextChangedListener(this);
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        submit.setEnabled(false);
        submit.setBackgroundResource(R.drawable.ash_btn_frame);
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        String phoneStr = phone.getText().toString().trim();
        String codeStr = code.getText().toString().trim();
        String onePassStr = one_pass.getText().toString().trim();
        String twoPassStr = two_pass.getText().toString().trim();

        if(isRequestStr(phoneStr)&&isRequestStr(codeStr)&&isRequestStr(onePassStr)&&isRequestStr(twoPassStr)){
            submit.setEnabled(true);
            submit.setBackgroundResource(R.drawable.blue_btn_frame);
        }else{
            submit.setEnabled(false);
            submit.setBackgroundResource(R.drawable.ash_btn_frame);
        }
    }

    @Override
    public void afterTextChanged(Editable s) {}
}
